Java এর বিল্ট-ইন Functional Interfaces (Runnable, Callable, Comparator)

Functional Interfaces - জাভা ফাংশনাল প্রোগ্রামিং (Java Functional Programming) - Java Technologies

346

Java Functional Programming হল একটি প্রোগ্রামিং প্যারাডাইম যেখানে ফাংশনগুলি প্রথম শ্রেণীর নাগরিক (first-class citizens) হিসেবে ব্যবহৃত হয়। Java 8 থেকে Functional Interfaces এবং Lambda Expressions ইন্ট্রডিউস করা হয়েছে যা ফাংশনাল প্রোগ্রামিংয়ের ধারণাকে Java তে বাস্তবায়িত করেছে।

Functional Interfaces এমন interfaces, যেগুলির শুধুমাত্র একটি abstract method থাকে, এবং এগুলি lambda expressions এবং method references ব্যবহার করে আরও সহজভাবে কাজে লাগানো যায়। Java এর কিছু বিল্ট-ইন Functional Interfaces রয়েছে যা বিশেষ করে Runnable, Callable, এবং Comparator

নিচে আমরা এই তিনটি Functional Interface (Runnable, Callable, Comparator) সম্পর্কে বিস্তারিত জানব এবং তাদের ব্যবহার উদাহরণসহ দেখব।


1. Runnable Interface

Runnable হল একটি Functional Interface যা java.lang প্যাকেজে অবস্থিত এবং এর একটি একমাত্র run() মেথড থাকে। এটি threading ব্যবস্থাপনায় ব্যবহৃত হয়, যেখানে run() মেথডের মধ্যে থ্রেডের কার্যক্রম নির্ধারণ করা হয়।

Runnable Interface এর বৈশিষ্ট্য:

  • এটি কোন আর্গুমেন্ট নেয় না এবং কোন ভ্যালু রিটার্নও করে না।
  • এটি সাধারণত multithreading বা asynchronous tasks এর জন্য ব্যবহৃত হয়।

Runnable Interface উদাহরণ (lambda expression):

public class RunnableExample {
    public static void main(String[] args) {
        // Using Runnable with a Lambda Expression
        Runnable task = () -> {
            System.out.println("Running in a separate thread");
        };
        
        // Running the task using a thread
        Thread thread = new Thread(task);
        thread.start();
    }
}

এখানে, Runnable interface এর run() মেথড একটি lambda expression দিয়ে সংজ্ঞায়িত করা হয়েছে এবং Thread এ চলানো হয়েছে।


2. Callable Interface

Callable হল একটি Functional Interface যা java.util.concurrent প্যাকেজে অবস্থিত এবং এর মধ্যে একটি মাত্র call() মেথড থাকে। Callable interface এর মেইন পার্থক্য হল যে এটি Runnable এর তুলনায় একটি ভ্যালু রিটার্ন করে এবং এটি Exception থ্রো করতে পারে।

Callable Interface এর বৈশিষ্ট্য:

  • Callable interface এর call() মেথড একটি value রিটার্ন করে, যেখানে Runnable কোন ভ্যালু রিটার্ন করে না।
  • এটি exceptions handle করতে সক্ষম, যা Runnable এর ক্ষেত্রে সম্ভব নয়।

Callable Interface উদাহরণ (lambda expression):

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

public class CallableExample {
    public static void main(String[] args) throws Exception {
        // Using Callable with a Lambda Expression
        Callable<Integer> task = () -> {
            // Simulating some computation
            return 10 + 20;
        };
        
        // Wrapping the Callable in a FutureTask
        FutureTask<Integer> futureTask = new FutureTask<>(task);
        
        // Running the task in a new thread
        Thread thread = new Thread(futureTask);
        thread.start();
        
        // Getting the result
        System.out.println("Result: " + futureTask.get()); // Output: Result: 30
    }
}

এখানে, Callable interface এর call() মেথড একটি lambda expression দিয়ে সংজ্ঞায়িত করা হয়েছে এবং FutureTask ব্যবহার করে থ্রেডে রান করা হয়েছে। get() মেথডের মাধ্যমে রিটার্ন ভ্যালু পাওয়া যাচ্ছে।


3. Comparator Interface

Comparator হল একটি Functional Interface যা java.util প্যাকেজে অবস্থিত এবং এটি two-object comparison করার জন্য ব্যবহৃত হয়। compare(T o1, T o2) মেথড দিয়ে এটি দুটি অবজেক্টের তুলনা করে এবং সেই অনুযায়ী তাদের সাজানো বা অর্ডার করা হয়।

Comparator Interface এর বৈশিষ্ট্য:

  • এটি দুটি অবজেক্টের তুলনা করে এবং একটি negative, zero, বা positive ভ্যালু রিটার্ন করে।
  • সাধারণত এটি sorting এবং ordering এর জন্য ব্যবহৃত হয়।

Comparator Interface উদাহরণ (lambda expression):

import java.util.Arrays;
import java.util.Comparator;

public class ComparatorExample {
    public static void main(String[] args) {
        // Sample data
        String[] names = {"Alice", "Bob", "Charlie", "David"};
        
        // Using Comparator with Lambda Expression to sort alphabetically
        Arrays.sort(names, (name1, name2) -> name1.compareTo(name2));
        
        // Printing sorted names
        System.out.println(Arrays.toString(names)); // Output: [Alice, Bob, Charlie, David]
    }
}

এখানে, Comparator interface এর compare() মেথড একটি lambda expression দিয়ে সংজ্ঞায়িত করা হয়েছে এবং Arrays.sort() এর মাধ্যমে তালিকা সাজানো হয়েছে।


Runnable, Callable, Comparator এর মধ্যে পার্থক্য:

FeatureRunnableCallableComparator
Packagejava.langjava.util.concurrentjava.util
Methodsvoid run()V call()int compare(T o1, T o2)
Return ValueNo return valueReturns a value of type VReturns an integer (-ve, 0, +ve)
Exception HandlingDoes not throw exceptionsCan throw exceptionsDoes not throw exceptions
UsageUsed for threads without resultUsed for threads that return a resultUsed for comparing two objects
Default ImplementationsDefault implementations are availableDefault implementations are availableNo default implementations

সারাংশ:

  • Runnable: এই interface ব্যবহৃত হয় যখন আপনি থ্রেডে কোনো কাজ চালাতে চান, কিন্তু কাজের শেষে কোনো ভ্যালু রিটার্ন করার প্রয়োজন নেই।
  • Callable: এটি থ্রেডে কাজের শেষে একটি ভ্যালু রিটার্ন করতে সক্ষম এবং এটি exception থ্রো করতে পারে। এটি সাধারণত asynchronous কাজের জন্য ব্যবহৃত হয়।
  • Comparator: এটি দুটি অবজেক্টের তুলনা করতে ব্যবহৃত হয় এবং sorting বা ordering এর জন্য কাজ করে।

Functional Interfaces এর মাধ্যমে Java 8 থেকে ফাংশনাল প্রোগ্রামিংয়ের ধারণা বাস্তবায়িত হয়েছে এবং lambda expressions ব্যবহার করে কোড আরও সংক্ষিপ্ত ও পরিষ্কার করা সম্ভব হয়েছে।

Content added By
Promotion

Are you sure to start over?

Loading...